package br.unicamp.ic.inf300.arena.modelo.logistico;

import java.util.Collection;
/**
 * Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * SalaCinema.java
 */

public class SalaCinema extends Sala {
	private Collection<AssentoSimples> assentosSimples;

	public SalaCinema() {
		super();
		super.setTipo(Sala.TIPO_CINEMA);
	}

	/**
	 * 
	 * @param identificacao
	 * @param caracteristica
	 * @param qtdTotalAssentos
	 * @param unidadeNegocio
	 */
	public SalaCinema(String identificacao, String caracteristica,
			int qtdTotalAssentos, UnidadeNegocio unidadeNegocio) {
		super(identificacao, caracteristica, qtdTotalAssentos, unidadeNegocio);
		super.setTipo(Sala.TIPO_CINEMA);
	}
	
	/**
	 * @return Assento Simples (disponivel)
	 */
	//TODO: IMPL. PROVISORIA ENQTO NAO TEM A FUNCIONALIDADE MAPA DE ASSENTOS
	public Assento getProximoAssentoDisponivel() {
		return new AssentoSimples(1, 1, 1);
	}

	public Collection<AssentoSimples> getAssentosSimples() {
		return assentosSimples;
	}

	public void setAssentosSimples(Collection<AssentoSimples> assentosSimples) {
		this.assentosSimples = assentosSimples;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("SalaCinema ( ")
	        .append(super.toString()).append(TAB)
	        .append("assentosSimples = ").append(this.assentosSimples).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result
				+ ((assentosSimples == null) ? 0 : assentosSimples.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		final SalaCinema other = (SalaCinema) obj;
		if (assentosSimples == null) {
			if (other.assentosSimples != null)
				return false;
		} else if (!assentosSimples.equals(other.assentosSimples))
			return false;
		return true;
	}

	
}